Repository navigation
Release 0.4.0 - #197
Merged
Merged
Release 0.4.0#197
Conversation
The PyInstaller sidecar embeds the build image's glibc, so ubuntu-latest moving to 26.04 would break the Linux packages on 24.04. Build .deb/.tar.gz per Ubuntu LTS and the .rpm inside rockylinux:9.
…r.gz Packages built on ubuntu-24.04 need glibc 2.38 and do not start on Debian 12 or Ubuntu 22.04. Build the sidecar once in rockylinux:9 (glibc 2.34) and reuse it, replacing the Ubuntu 24/26 matrix. Update docs and changelog.
Add a user-initiated (or opt-in at startup) update check against the GitHub Releases API, run entirely in the Electron main process. Stable builds see only newer stable releases; beta builds also see newer betas. The update panel shows release notes, release page, ignore/unignore and, on Windows installed builds, a cancellable download with size and SHA-256 verification before the installer is started. The About dialog links to the repository and closes with Esc. Fix the menu-listener cleanup reading window.electronAPI at unmount, and correct docs that claimed About reads the version from /health. Privacy docs now say offline by default. [skip ci]
…te and sync - Typed canonical values, stable keys and an editable/deletable contract per field, with idempotent writes, round-trip and read-after-write verification (422 lossy_write) - Single verified atomic transaction per /write, /delete and /undo; identical saves leave the file untouched - POST /undo with an in-memory journal; byte-identical restore through a byte patch, falling back to the stored values; chains survive saves that move the mtime - IPTC/XMP read and write for JPEG with a segment writer, IPTC <-> XMP twins kept in step in the same transaction, digest refreshed only when every pair agrees; a mirrored delete keeps a twin that holds other language alternatives - Own codecs for EXIF, MP4 and ID3/Vorbis/ASF tags, PDF XMP and Office packages; hachoir as read-only fallback with an explicit read-only reason - Uniform error body, 503 file_busy for concurrent reads, Windows fixes (hidden files, DACL, pre-1970 mtime) - Typed editor with field addition, token-based Undo and notices in the renderer; integers beyond 2^53 handled exactly - Runtime and dev requirements split; test-python-windows CI job - Docs and changelog aligned with the real behaviour
…o 32 bits Hosted Linux runners store 1900-01-01 as 1901-12-13; the sidecar correctly reports a lossy write there, so the tests cannot apply. They still run where the filesystem keeps the date (Windows, most local setups).
…xpand/collapse folders
…ibutes are not restored by monkeypatch)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.38.2 to 4.39.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@v4.38.2...v4.39.1) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.39.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.21.2 to 6.21.4. - [Release notes](https://github.com/py-pdf/pypdf/releases) - [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md) - [Commits](py-pdf/pypdf@6.21.2...6.21.4) --- updated-dependencies: - dependency-name: pypdf dependency-version: 6.21.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 1.4.0 to 1.4.1. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](pytest-dev/pytest-asyncio@v1.4.0...v1.4.1) --- updated-dependencies: - dependency-name: pytest-asyncio dependency-version: 1.4.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.1.1 to 9.2.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](pytest-dev/pytest@9.1.1...9.2.0) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) from 19.3.0 to 19.3.1. - [Release notes](https://github.com/react/react/releases) - [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/react/react/commits/v19.3.1/packages/react-dom) --- updated-dependencies: - dependency-name: react-dom dependency-version: 19.3.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 1.48.0 to 1.65.0. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/1.65.0/packages/lucide-react) --- updated-dependencies: - dependency-name: lucide-react dependency-version: 1.64.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [electron](https://github.com/electron/electron) from 44.9.3 to 45.1.0. - [Release notes](https://github.com/electron/electron/releases) - [Commits](electron/electron@v44.9.3...v45.1.0) --- updated-dependencies: - dependency-name: electron dependency-version: 45.1.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…end (#195) Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 6.1.1 to 6.1.2. - [Release notes](https://github.com/vitejs/vite-plugin-react/releases) - [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.1.2/packages/plugin-react) --- updated-dependencies: - dependency-name: "@vitejs/plugin-react" dependency-version: 6.1.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.141.1 to 0.162.0. - [Release notes](https://github.com/fastapi/fastapi/releases) - [Commits](fastapi/fastapi@0.141.1...0.162.0) --- updated-dependencies: - dependency-name: fastapi dependency-version: 0.162.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
…anchored regexes in updates test
…rd in OLE test factory
…, handle empty excepts (CodeQL notes)
| @pytest.mark.asyncio | ||
| async def test_io_error_during_the_byte_patch_falls_back_to_the_values(client, tmp_path, monkeypatch): | ||
| """B3: a failure after the patch started writing must not leave a half patched file.""" | ||
| import api.byte_patch as byte_patch |
| assert path.read_bytes() == before | ||
| _no_leftovers(path) | ||
| jsonfake.lose_on_restore = None | ||
| body = _ok(await _undo(client, token)) |
| @windows_only | ||
| @pytest.mark.asyncio | ||
| async def test_api_write_on_locked_file_is_503_file_busy(client, tmp_path, monkeypatch): | ||
| import core.path_security as security |
|
|
||
| @windows_only | ||
| def test_attributes_applied_to_target_when_replace_drops_them(tmp_path, monkeypatch): | ||
| import core.path_security as security |
| count.append(args[0]) | ||
| return real(*args, **kwargs) | ||
| monkeypatch.setattr(routes, "secure_atomic_write", counting) | ||
| import core.base_handler as base |
| import pytest | ||
| from httpx import ASGITransport, AsyncClient | ||
|
|
||
| import api.routes as routes |
… the raw exception text
| def test_post_commit_warnings_do_not_leak_the_exception_text(tmp_path, monkeypatch): | ||
| """A failure while restoring metadata after the commit is reported with a fixed | ||
| description; the detail (here a path) goes to the log only.""" | ||
| import core.path_security as security |
…names, assert side effects)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes 0.4.0 to stable.
python/config.py,electron/andfrontend/package files and lockfiles are all at 0.4.0.CHANGELOG.mdhas the## [0.4.0] — 2026-11-02section (release notes extracted byscripts/changelog_notes.py); the Roadmap stays under[Unreleased].v0.4.0-beta.7), so thefind-latest-betagate passes.develop: pytest 1364 passed / 14 skipped, frontend 92/92, electron 27/27.